/**
 * 
 */
package masml2jade.agents;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import masml2jade.AgentRole;
import masml2jade.Belief;
import masml2jade.Environment;
import masml2jade.behaviour.ReativoBehaviour;

import jade.core.Agent;

/**
 * @author Administrator
 *
 */
public abstract class ModelAgent extends ReflexAgent {
	
	// Belief List
	private Hashtable<String, Belief> beliefs = new Hashtable<String, Belief>();
	
	// Next Function Field
	protected String nextFunction = new String();
	
	protected ModelAgent(Environment environment, AgentRole agentRole) {
		super(environment, agentRole);
		initialize();
	}
	
	// Next Function Method
	protected void nextFunction() {
		
	}
	
	// Beliefs
	public Belief getBelief(String key) {
		return beliefs.get(key);
	}
	public void addBelief(String key, Belief belief) {
		beliefs.put(key, belief);
	}
	public Belief removeBelief(String key) {
		return beliefs.remove(key);
	}
	public void removeAllBeliefs() {
		beliefs.clear();
	}
	public Hashtable<String, Belief> getAllBeliefs() {
		return beliefs;
	}
	
	// Put agent initializations here
	  protected void setup() {
		  super.setup();
		  
		  
	  }
	
	  // Put agent clean-up operations here
	  protected void takeDown() {
		  
	  }
	  
	  @Override
		protected abstract void initialize() ;
}
